package jnpf.onlinedev.util;

import jnpf.database.entity.DbLinkEntity;
import jnpf.base.util.VisualUtils;
import jnpf.model.visiual.TableModel;
import jnpf.onlinedev.model.OnlineDevListModel.OnlineDevListDataVO;
import lombok.Cleanup;
import lombok.extern.slf4j.Slf4j;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author JNPF开发平台组
 * @version V3.1.0
 * @copyright 引迈信息技术有限公司（https://www.jnpfsoft.com）
 * @date  2021/7/12
 */
@Slf4j
public class VisualJDBCUtils {
	public static void custom(DbLinkEntity linkEntity, String sql)throws SQLException{
	  @Cleanup Connection conn =VisualUtils.getTableConn();
		if (linkEntity!=null){
			conn = VisualUtils.getDataConn(linkEntity);
		}
		try {
			//开启事务
			conn.setAutoCommit(false);
			@Cleanup PreparedStatement preparedStatement = conn.prepareStatement(sql);
			preparedStatement.executeUpdate();
			//提交事务
			conn.commit();
		} catch (Exception e) {
			log.error(e.getMessage());
				conn.rollback();
		} finally {
			try {
				if (conn != null) {
					conn.close();
				}
			} catch (Exception e) {
				log.error(e.getMessage());
			}
		}
	}

//	public static List<OnlineDevListDataVO> queryList(DbLinkEntity linkEntity, String sql, List<Object> objectList, TableModel tableModel){
//		List<OnlineDevListDataVO> resultList = new ArrayList<>();
//		@Cleanup Connection connection = null;
//			try {
//				connection = VisualUtils.getDataConn(linkEntity);
//				String pkeyName = VisualUtils.getpKey(connection,tableModel.getTable());
//				@Cleanup PreparedStatement preparedStatement = connection.prepareStatement(sql);
//				if (objectList.size()>0){
//					for (int i = 0; i<objectList.size(); i++ ){
//						Object o = objectList.get(i);
//						preparedStatement.setObject(i+1,o);
//					}
//				}
//				ResultSet resultSet = preparedStatement.executeQuery();
//				while (resultSet.next()) {
//					Map<String,Object> map = new HashMap<>(16);
//					for (int i = 1; i <= resultSet.getMetaData().getColumnCount(); i++) {
//						map.put(resultSet.getMetaData().getColumnLabel(i).toLowerCase(), resultSet.getString(i));
//					}
//					OnlineDevListDataVO dataVO = new OnlineDevListDataVO();
//					dataVO.setData(map);
//					dataVO.setId(String.valueOf(map.get(pkeyName)));
//					resultList.add(dataVO);
//				}
//			} catch (SQLException sqlException) {
//				log.error(sqlException.getMessage());
//				sqlException.printStackTrace();
//			}finally {
//				if (connection!=null){
//					try {
//						connection.close();
//					} catch (SQLException sqlException) {
//						log.error(sqlException.getMessage());
//						sqlException.printStackTrace();
//					}
//				}
//			}
//			return resultList;
//		}
}
